package com.shift.sdk;

import java.util.List;
import com.shift.sdk.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

/**
 * カメレオンコード解析結果リストのアダプタ.
 *
 * @author SHIFT
 */
public class CCIdListAdapter extends ArrayAdapter<CCInfo> implements OnClickListener {
	
    /** 行情報. */
    private List<CCInfo> rowItems;
    /** インフレータ. */
    private LayoutInflater inflater;
    
    private Context context;
    /**
     * コンストラクタ.
     *
     * @param context
     *            コンテキスト
     * @param resourceId
     *            リソースID
     * @param items
     *            行情報
     */
    public CCIdListAdapter(Context context, final int resourceId,
            final List<CCInfo> items) {
        super(context, resourceId, items);
        rowItems = items;
        this.inflater = LayoutInflater.from(context);
        this.context = context;
    }

    /**
     * 1行分の処理.
     *
     * @param position
     *            ポジション
     * @param convertView
     *            ListRowView
     * @param parent
     *            parent
     * @see android.widget.ArrayAdapter#getView(int, android.view.View, android.view.ViewGroup)
     * @return View
     */
    @Override
    public final View getView(int position,View convertView, ViewGroup parent) {
    	 // マッピング
        final CCInfo info = (CCInfo) rowItems.get(position);
        ViewHolder vh = null;
        // 1行分layoutを生成
        if (convertView == null) {
        	convertView = inflater.inflate(R.layout.list_low, null);
        	vh = new ViewHolder();
        	vh.txtNumber =  (TextView) convertView.findViewById(R.id.number_text);
        	vh.txtCcId = (TextView) convertView.findViewById(R.id.ccid_text);
        	vh.delete = (ImageView) convertView.findViewById(R.id.delete);
        	vh.delete.setOnClickListener(this);
        	convertView.setTag(vh);
        }else{
        	vh = (ViewHolder) convertView.getTag();
        }
        // リスト/行番号
        vh.txtNumber.setText(String.valueOf(position+1));
        // リスト/CCID
        vh.txtCcId.setText(info.getCcId());
        vh.delete.setTag(position);
        return convertView;
    }
    
    public boolean addItem(CCInfo object) {
    	for(CCInfo ccInfo : rowItems){
    		if(ccInfo.getCcId().equals(object.getCcId())){
    			return false;
    		}
    	}
    	super.add(object);
    	return true;
    }
    
    @Override
    public void notifyDataSetChanged() {
    	super.notifyDataSetChanged();
    	MovieActivity activity = (MovieActivity) context;
    	activity.count.setText(context.getString(R.string.color_code_count, rowItems.size()));
    }

    /**
     * リスト選択時の処理.
     */
    @Override
    public void onClick(View v) {
        // 選択行のクリックイベントを呼び出す
        int position = (Integer) v.getTag();
        try{
        	rowItems.remove(position);
        }catch(Exception e){
        	e.printStackTrace();
        }
        notifyDataSetChanged();
    }
    
    public List<CCInfo> getList(){
    	return rowItems;
    }
    
   class ViewHolder{
	   TextView txtNumber;
	   TextView txtCcId;
	   ImageView delete;
   }
}
